using System;
using System.Collections.Generic;
using System.Text;

namespace Universe.WinForms.DropDownUI
{
    using System.Windows.Forms;
    using System.Drawing;
    using System.Windows.Forms.VisualStyles;
    using System.Runtime.InteropServices;
    using System.ComponentModel;
    using System.Windows.Forms.Design;

    /// <summary>
    /// 
    /// </summary>
    public class InputReport
    {
        public static readonly InputReport Empty;

        static InputReport()
        {
            InputReport.Empty = new InputReport();
        }
    }

    /// <summary>
    /// 
    /// </summary>
    public enum DropDownAction
    {
        ByKeyboard,
        ByMouse,
        Unknown,
    }

    /// <summary>
    /// 
    /// </summary>
    public class DropDownHolderEventArgs : CancelEventArgs
    {
        /// <summary>
        /// 
        /// </summary>
        /// <param name="action"></param>
        /// <param name="cancel"></param>
        public DropDownHolderEventArgs(DropDownAction action, bool cancel)
            : this(action, cancel, InputReport.Empty)
        {
        }

        /// <summary>
        /// 
        /// </summary>
        /// <param name="action"></param>
        /// <param name="cancel"></param>
        /// <param name="keyReport"></param>
        public DropDownHolderEventArgs(DropDownAction action, bool cancel, InputReport report)
            : base(cancel)
        {
            _Action = action;
            _Report = report;
        }

        /// <summary>
        /// 
        /// </summary>
        public InputReport InputReport
        {
            get { return _Report; }
        }
        private InputReport _Report;

        /// <summary>
        /// 
        /// </summary>
        public DropDownAction Action
        {
            get { return _Action; }
        }
        private DropDownAction _Action;
    }

    public delegate void DropDownHolderEventHandler(object sender, DropDownHolderEventArgs e);
}
